package write.basic;

import java.lang.reflect.Array;
import java.util.Arrays;

public class ArraysDemo {
    public static void main(String[] args) {
        int[] arr ={8,1,4,6,0,5,2,3,7};

        //java提供了数组的帮助类Arrays

        //排序
        Arrays.sort(arr);

        //数组的一次输出
        System.out.println(Arrays.toString(arr));
        //自己写的遍历输出
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
        System.out.println();

        //数组复制
        //第一个参数：源数组，被复制的数组
        //第二个参数：新数组的长度，若>源数组的长度，则多余的元素补默认值
        //                      若<源数组的长度，则自动截取，取源数组从下标0开始的指定长度
        int[] b = Arrays.copyOf(arr,10);
        System.out.println(Arrays.toString(b));
        //常用于数组扩容：
        // (扩容是为扩容，数组创建后，长度无法改变，本质是新建一个数组再修改引用指向的地址)
        arr = Arrays.copyOf(arr,arr.length+1);

        //数组复制的灵活方法
        //参数1：源数组
        //参数2：开始复制的下标
        //参数3：目标数组
        //参数4：开始粘贴的下标
        //参数5：粘贴的数据数量
        //这个方法严格控制下标越界，
        // 源复制的数量超出长度，报错
        // 目标粘贴的数量超出长度，报错
        System.out.println(Arrays.toString(arr));
        int[] c = new int[30];
        System.arraycopy(arr,0,c,0,11);
        System.out.println(Arrays.toString(c));


    }
}
